package com.eliza.kotlin.design.creation.factory.static_2


/*-*- coding:utf-8 -*-
 * @Author  : debi
 * @Time    : 6/5/22
 * @Software: IntelliJ IDEA
 */

/*
*     静态工厂
* */
private class CoffeeStore {

    /**
     *
     * 解除 Store 与具体 coffee 而依赖
     *     * 调用工厂创建 : 但更改需求  还需要已有代码
     * */

    fun orderCoffee(type: String): Coffee {

        val coffee = SimpleCoffeeFactory.createCoffee(type)

        //加配料
        coffee.addMilk()
        coffee.addsugar()
        return coffee
    }

}

/*
* 耦合关：
    * Store 与 coffee --》 Factory 与 coffee
* */
object Client {
    @JvmStatic
    fun main(args: Array<String>) {

        val coffeeStore = CoffeeStore()
        /*
              如果在添加一个 品种,则要修改 源代码,==> 开闭原则
              */
        val coffee: Coffee = coffeeStore.orderCoffee("latte")

        println(coffee.name)
    }
}